package com.briup.day20;

public class Homework {
    public static void main(String[] args) {
        // 注意乌龟和兔子是处于同一场比赛中，所以比赛规则是一样的，即任务是一样的
        // 启动两个线程，分别执行各自的任务
        Thread t = new Thread(new CompetitionRules(), "乌龟");
        Thread t2 = new Thread(new CompetitionRules(), "兔子");
        t.start();
        t2.start();
    }
}

// 定义一个比赛规则类
class CompetitionRules implements Runnable {

    // 用于记录奔跑距离的属性
    private int distance;
    // 用于记录比赛是否结束
    private static boolean flag = false;

    @Override
    public void run() {
        // 获取线程的名字，用于记录奔跑的过程
        String name = Thread.currentThread().getName();
        while (distance < 100 && !flag) {
            double random = Math.random();
            // 当前线程为兔子线程，同时随机到0.3以内的随机数时，兔子的奔跑距离+2
            if (random <= 0.3 && "兔子".equals(name)) {
                distance += 2;
                System.out.printf("%s奔跑了%s米的距离%n", name, distance);
            } else if (random > 0.3 && "乌龟".equals(name)) {
                // 如果乌龟线程获取到时间片资源，并且随机数在0.3到1之间，那么其奔跑距离+1
                distance += 1;
                System.out.printf("%s奔跑了%s米的距离%n", name, distance);
            }
            // 当有动物跑到100米，那么比赛结束
            if (distance == 100) {
                flag = true;
            }
        }
        if (distance == 100) {
            System.out.printf("%s获得了冠军，游戏结束%n", name);
        }
    }
}